package com.sheng.leetcode.year2023.month07.day27;

import org.junit.Test;

import java.util.Arrays;

/**
 * @author by ls
 * @date 2023/7/27
 * <p>
 * 2500. 删除每行中的最大值<p>
 * <p>
 * 给你一个 m x n 大小的矩阵 grid ，由若干正整数组成。<p>
 * 执行下述操作，直到 grid 变为空矩阵：<p>
 * 从每一行删除值最大的元素。如果存在多个这样的值，删除其中任何一个。<p>
 * 将删除元素中的最大值与答案相加。<p>
 * 注意 每执行一次操作，矩阵中列的数据就会减 1 。<p>
 * 返回执行上述操作后的答案。<p>
 * <p>
 * 示例 1：<p>
 * 输入：grid = [[1,2,4],[3,3,1]]<p>
 * 输出：8<p>
 * 解释：上图展示在每一步中需要移除的值。<p>
 * - 在第一步操作中，从第一行删除 4 ，从第二行删除 3（注意，有两个单元格中的值为 3 ，我们可以删除任一）。在答案上加 4 。<p>
 * - 在第二步操作中，从第一行删除 2 ，从第二行删除 3 。在答案上加 3 。<p>
 * - 在第三步操作中，从第一行删除 1 ，从第二行删除 1 。在答案上加 1 。<p>
 * 最终，答案 = 4 + 3 + 1 = 8 。<p>
 * <p>
 * 示例 2：<p>
 * 输入：grid = [[10]]<p>
 * 输出：10<p>
 * 解释：上图展示在每一步中需要移除的值。<p>
 * - 在第一步操作中，从第一行删除 10 。在答案上加 10 。<p>
 * 最终，答案 = 10 。<p>
 * <p>
 * 提示：<p>
 * m == grid.length<p>
 * n == grid[i].length<p>
 * 1 <= m, n <= 50<p>
 * 1 <= grid[i][j] <= 100<p>
 * <p>
 * 来源：力扣（LeetCode）<p>
 * 链接：<a href="https://leetcode.cn/problems/delete-greatest-value-in-each-row">2500. 删除每行中的最大值</a><p>
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。<p>
 */
public class LeetCode2500 {

    @Test
    public void test01() {
        int[][] grid = {{1, 2, 4}, {3, 3, 1}};
//        int[][] grid = {{10}};
        System.out.println(new Solution().deleteGreatestValue(grid));
    }
}

class Solution {
    public int deleteGreatestValue(int[][] grid) {
        int ans = 0;
        for (int[] ints : grid) {
            Arrays.sort(ints);
        }
        for (int i = grid[0].length - 1; i >= 0; i--) {
            int max = 0;
            for (int[] ints : grid) {
                max = Math.max(max, ints[i]);
            }
            ans += max;
        }
        return ans;
    }
}
